home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_2 / areuh.tar / areuh / jmpdoc / algo < prev    next >
Text File  |  1990-10-10  |  2KB  |  56 lines

  1. Traitement de la classe des JMP
  2.  
  3.     passe 1
  4.     ajouter un nouveau descriptif de JMP
  5.     memoriser origine
  6.     memoriser destination
  7.     memoriser type (JMP, JMPC, BETNC, etc.)
  8.     si l'instruction precedente etait un test reversible
  9.         alors memoriser ce fait
  10.     fin si
  11.     si destination # erreur
  12.         alors chercher le type de saut de taille minimum
  13.         sinon type de saut = taille max
  14.     fin si
  15.     memoriser le type de saut trouve
  16.     renvoyer sa taille
  17.     passe 2
  18.     renvoyer la taille du saut, telle que calculee par ps_jmp a la fin pass1
  19.     passe 3
  20.     si listing
  21.         alors imprimer la ligne courante
  22.     fin si
  23.     traiter les instructions correspondant au type calcule par ps_jmp
  24.  
  25. Procedure ps_jmp, appelee a la fin de la passe 1
  26.  
  27.     pour tous les descriptifs de JMP faire
  28.     pour toutes les combinaisons de saut de taille < taille de la passe 1
  29.         si |origine - destination| < taille adressable par cette combinaison
  30.         alors
  31.             delta := taille de la passe 1 - taille de cette combinaison
  32.             org := origine de ce saut
  33.             pour tous les descriptifs de JMP apres celui-ci faire
  34.             origine -= delta
  35.             si destination > org
  36.                 alors destination -= delta
  37.             fin si
  38.             fin pour
  39.             pour tous les descriptifs de JMP avant celui-ci faire
  40.             si destination > org
  41.                 alors destination -= delta
  42.             fin si
  43.             fin pour
  44.             memoriser la combinaison et l'inversion eventuelle du test
  45.             sortir de la boucle et passer au descriptif de JMP suivant
  46.         fin si
  47.     fin pour
  48.     fin pour
  49.  
  50. regtest, ptrtest, stattest
  51.  
  52.     si origine du JMP suivant = pc + 2
  53.     et JMP suivant doit avoir inversion du test
  54.     alors inverser le test
  55.     fin si
  56.